HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/dashboard.orbiwheels.com/app/Http/Controllers/Api/Transporter/DashboardController.php
<?php

namespace App\Http\Controllers\Api\Transporter;

use App\Http\Controllers\Controller;
use App\Models\BookingRide;
use App\Models\Driver;
use App\Models\Vehicle;
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function dashboard(Request $request)
    {
        try {
            $transporter = auth('transporter-api')->user();

            if (!$transporter) {
                return response()->json([
                    'status' => false,
                    'message' => 'Unauthorized'
                ], 401);
            }

            $transporterId = $transporter->id;

            $pendingRide   = BookingRide::where('transporter_id', $transporterId)
                ->where('status', BookingRide::PENDING)
                ->count();

            $ongoingRide   = BookingRide::where('transporter_id', $transporterId)
                ->where('status', BookingRide::ONGOING)
                ->count();

            $completeRide  = BookingRide::where('transporter_id', $transporterId)
                ->where('status', BookingRide::COMPLETED)
                ->count();

            $cancelledRide = BookingRide::where('transporter_id', $transporterId)
                ->where('status', BookingRide::CANCELLED)
                ->count();

            $allDrivers = Driver::where('transporter_id', $transporterId)
                ->where('is_verified', 1)
                ->count();

            $allVehicles = Vehicle::where('transporter_id', $transporterId)
                ->where('is_verified', 1)
                ->count();

            return response()->json([
                'status'       => true,
                'message'      => 'Dashboard data fetched successfully',
                'data' => [
                    'drivers'       => $allDrivers,
                    'vehicles'      => $allVehicles,
                    'pending_rides' => $pendingRide,
                    'ongoing_rides' => $ongoingRide,
                    'completed_rides' => $completeRide,
                    'cancelled_rides' => $cancelledRide,
                ]
            ], 200);
        } catch (\Exception $e) {
            return response()->json([
                'status' => false,
                'message' => 'Something went wrong',
                'error'   => $e->getMessage(),
            ], 500);
        }
    }


   public function getAllDriver(Request $request)
{
    try {
        $transporter = auth('transporter-api')->user();

        $drivers = Driver::with('documents')
            ->where('transporter_id', $transporter->id)
            ->where('is_verified', 1)
            ->where('mode', 1) // only online
            ->orderBy('id', 'desc')
            ->get();

        return response()->json([
            'status' => true,
            'message' => 'All drivers fetched successfully.',
            'data' => $drivers
        ]);
    } catch (\Exception $e) {
        return response()->json([
            'status' => false,
            'message' => 'Failed to fetch drivers: ' . $e->getMessage()
        ], 500);
    }
}

public function getDriverDetail(Request $request, $driverId)
{
    try {
        $transporter = auth('transporter-api')->user();
        $driver = Driver::with('documents')
            ->where('transporter_id', $transporter->id)
            ->where('is_verified', 1)
            ->where('mode', 1) // only online
            ->where('id', $driverId)
            ->first();

        if (!$driver) {
            return response()->json([
                'status' => false,
                'message' => 'Driver not found or does not belong to you.'
            ], 404);
        }

        return response()->json([
            'status' => true,
            'message' => 'Driver details fetched successfully.',
            'data' => $driver
        ]);
    } catch (\Exception $e) {
        return response()->json([
            'status' => false,
            'message' => 'Failed to fetch driver details: ' . $e->getMessage()
        ], 500);
    }
}

public function getAllVehicle(Request $request)
{
    try {
        $transporter = auth('transporter-api')->user();

        $vehicles = Vehicle::with('documents')
            ->where('transporter_id', $transporter->id)
            ->orderBy('id', 'desc')
            ->get();

        return response()->json([
            'status' => true,
            'message' => 'All vehicles fetched successfully.',
            'data' => $vehicles
        ]);
    } catch (\Exception $e) {
        return response()->json([
            'status' => false,
            'message' => 'Failed to fetch vehicles: ' . $e->getMessage()
        ], 500);
    }
}

public function getVehicleDetail(Request $request, $vehicleId)
{
    try {
        $transporter = auth('transporter-api')->user();
        $vehicle = Vehicle::where('transporter_id', $transporter->id)
            ->where('id', $vehicleId)
            ->first();

        if (!$vehicle) {
            return response()->json([
                'status' => false,
                'message' => 'Vehicle not found or does not belong to you.'
            ], 404);
        }

        return response()->json([
            'status' => true,
            'message' => 'Vehicle details fetched successfully.',
            'data' => $vehicle
        ]);
    } catch (\Exception $e) {
        return response()->json([
            'status' => false,
            'message' => 'Failed to fetch vehicle details: ' . $e->getMessage()
        ], 500);
    }
}
}